/**
 *  cookie 基础组件
 *
 *  @version 1.0.0
 *  @author gzh
 *
 *  @example
 *
 *  import cookies from '@/utils/cookies.js'
 *
 *  // 默认设置 --有效期为 一天
 *  cookies.set('name' , 'gzh')
 *
 *  // 设置对象类型的数据 --有效期为 半天
 *  cookies.set('name',JSON.stringify({'name':"xxxx"}) , {  expires : 0.5 })
 *
 *  // 获取数据  --- 注意 path 的问题
 *  cookies.get('name')
 *
 *  // 获取所有的数据
 *  cookies.getAll()
 *
 *  // 删除某一个数据
 *  cookies.remove('name')
 *
 */

// import Cookies from 'js-cookie';
import config from '@/common/config';

const cookies = {};

// // 默认配置信息
// const DEFAULT_COOKIE_OPTIONS = {
//   path: '',
//   expires: 1,
//   prefix: '',
// };

// /**
//  * @description 存储 cookie 值
//  * @param {String} name cookie name
//  * @param {String} value cookie value
//  * @param {Object} setting cookie setting
//  */
// cookies.set = function(name = 'default', value = '', cookieSetting = {}) {
//   // 设置cookie的 配置属性  主要为 path : 路径  expires : 生命周期
//   let currentCookieSetting = {
//     ...DEFAULT_COOKIE_OPTIONS,
//     ...config.cookies,
//     expires: 1,
//   };
//   Object.assign(currentCookieSetting, cookieSetting);
//   Cookies.set(`${config.cookies.prefix}-${name}`, value, currentCookieSetting);
// };

// /**
//  * @description 拿到 cookie 值
//  * @param {String} name cookie name
//  */
// cookies.get = function(name = 'default') {
//   return Cookies.get(`${config.cookies.prefix}-${name}`);
// };

// /**
//  * @description 拿到 cookie 全部的值
//  */
// cookies.getAll = function() {
//   return Cookies.get();
// };

// /**
//  * @description 删除 cookie
//  * @param {String} name cookie name
//  */
// cookies.remove = function(name = 'default', path = DEFAULT_COOKIE_OPTIONS.path) {
//   // 删除的时候必须与添加的路径相同  不然  path = '/oa'  下的 数据直接删除是删除不了的
//   return Cookies.remove(`${config.cookies.prefix}-${name}`, {
//     path: path,
//   });
// };

/**
 * 缓存数据优化
 * var cache = require('utils/cache.js');
 * import cache from '../cache'
 * 使用方法 【
 *     一、设置缓存
 *         string    cache.put('k', 'string你好啊');
 *         json      cache.put('k', { "b": "3" }, 2);
 *         array     cache.put('k', [1, 2, 3]);
 *         boolean   cache.put('k', true);
 *     二、读取缓存
 *         默认值    cache.get('k')
 *         string    cache.get('k', '你好')
 *         json      cache.get('k', { "a": "1" })
 *     三、移除/清理
 *         移除: cache.remove('k');
 *         清理：cache.clear();
 * 】
 * @type {String}
 */
var postfix = config.prefix; // 缓存前缀
/**
 * 设置缓存
 * @param  {[type]} k [键名]
 * @param  {[type]} v [键值]
 * @param  {[type]} t [时间、单位秒]
 */
cookies.put = (k, v, t) => {
	uni.setStorageSync(k, v);
	var seconds = parseInt(t);
	if (seconds > 0) {
		var timestamp = Date.parse(new Date());
		timestamp = timestamp / 1000 + seconds;
		uni.setStorageSync(k + postfix, timestamp + '');
	} else {
		uni.removeStorageSync(k + postfix);
	}
};

/**
 * 获取缓存
 * @param  {[type]} k   [键名]
 * @param  {[type]} def [获取为空时默认]
 */
cookies.get = (k, def) => {
	var deadtime = parseInt(uni.getStorageSync(k + postfix));
	if (deadtime) {
		if (parseInt(deadtime) < Date.parse(new Date()) / 1000) {
			if (def) {
				return def;
			} else {
				return false;
			}
		}
	}
	var res = uni.getStorageSync(k);
	if (res) {
		return res;
	} else {
		if (def == undefined || def == '') {
			def = false;
		}
		return def;
	}
};

cookies.remove = k => {
	uni.removeStorageSync(k);
	uni.removeStorageSync(k + postfix);
};

/**
 * 清理所有缓存
 * @return {[type]} [description]
 */
cookies.clear = () => {
	uni.clearStorageSync();
};


export default cookies;